﻿/*
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.dialog.add('hiddenfield', function (editor) {
    var _caption = '';
    var _idName = '';
    return {
        title: editor.lang.hidden.title,
        hiddenField: null,
        minWidth: 350,
        minHeight: 110,
        onShow: function () {
            delete this.hiddenField;

            var editor = this.getParentEditor(),
				selection = editor.getSelection(),
				element = selection.getSelectedElement();

            if (element && element.data('cke-real-element-type') && element.data('cke-real-element-type') == 'hiddenfield') {
                this.hiddenField = element;
                element = editor.restoreRealElement(this.hiddenField);
                this.setupContent(element);
                selection.selectElement(this.hiddenField);
            }
        },
        onOk: function () {
            var name = this.getValueOf('info', '_cke_saved_name'),
				value = this.getValueOf('info', 'value'),
				editor = this.getParentEditor(),
				element = CKEDITOR.env.ie && !(CKEDITOR.document.$.documentMode >= 8) ?
					editor.document.createElement('<input name="' + CKEDITOR.tools.htmlEncode(name) + '">')
					: editor.document.createElement('input');

            element.setAttribute('type', 'hidden');
            this.commitContent(element);
            var fakeElement = editor.createFakeElement(element, 'cke_hidden', 'hiddenfield');
            if (!this.hiddenField)
                editor.insertElement(fakeElement);
            else {
                fakeElement.replace(this.hiddenField);
                editor.getSelection().selectElement(fakeElement);
            }
            return true;
        },
        contents: [
			{
			    id: 'info',
			    label: editor.lang.hidden.title,
			    title: editor.lang.hidden.title,
			    elements: [
                    {
                        id: 'datafields',
                        type: 'select',
                        style: 'width:100%;',
                        label: editor.lang.hidden.datafields,
                        'default': 'text',
                        accessKey: 'D',
                        items: DIF.MasterData.getMasterFieldData(),
                        onChange: function (obj) {
                            var isExist = $.inArray(this.getValue(), ControlArray);
                            if (isExist < 0) {
                                var dialog = this.getDialog();
                                var selectValue = this.getValue();
                                var Item = jlinq.from(this.items).equals('1', selectValue).select();
                                if (typeof (Item) != "undefined") {
                                    if (typeof (Item[0]) != "undefined") { _caption = Item[0][0]; }
                                }
                                var textfieldName = dialog.getContentElement('info', '_cke_saved_name');
                                textfieldName.setValue(selectValue);
                                textfieldName.getElement().show();
                            } else {
                                if (obj.data.value != _idName) {
                                    alert(editor.lang.select.isexist_datafields);
                                }
                            }
                        },
                        setup: function (element) {
                            _idName = element.getAttribute('id');
                            this.setValue(element.getAttribute('datafields'));
                        },
                        commit: function (element) {
                            if (this.getValue()) {
                                element.setAttribute('datafields', this.getValue());
                                element.setAttribute('title', _caption);
                            }
                            else {
                                element.removeAttribute('datafields');
                                element.removeAttribute('title');
                            }
                        }
                    },
					{
					    id: '_cke_saved_name',
					    type: 'text',
					    label: editor.lang.hidden.name,
					    'default': '',
					    accessKey: 'N',
					    setup: function (element) {
					        this.setValue(
									element.data('cke-saved-name') ||
									element.getAttribute('name') ||
									'');
					    },
					    commit: function (element) {
					        if (this.getValue()) {
					            element.setAttribute('name', this.getValue());
					            element.setAttribute('id', this.getValue());
					        }
					        else {
					            element.removeAttribute('name');
					            element.removeAttribute('id');
					        }
					    }
					},
					{
					    id: 'value',
					    type: 'text',
					    label: editor.lang.hidden.value,
					    'default': '',
					    accessKey: 'V',
					    setup: function (element) {
					        this.setValue(element.getAttribute('value') || '');
					    },
					    commit: function (element) {
					        if (this.getValue())
					            element.setAttribute('value', this.getValue());
					        else
					            element.removeAttribute('value');
					    }
					}
				]
			}
		]
    };
});
